package com.lyun.common;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 根据生日自动生成年龄
 * @author 卓思华
 * @version 1.0
 */
public class GetAge {
    public static int getAgeForBirthday(String birthday) throws ParseException {
        //定义一个日期格式yyyy-MM-dd，将String转为Date
        SimpleDateFormat simp = new SimpleDateFormat("yyyy-MM-dd");
        Date date = simp.parse(birthday);
        //判断该生日是否在当前日期之前,设置一个初始值，表示输入日期错误
        if (date.after(new Date())) {
            return -1;
        }
        //获取当前日历对象中的年、月、日
        Calendar nowc = Calendar.getInstance();
        int nowYear = nowc.get(Calendar.YEAR);
        int nowMonth = nowc.get(Calendar.MONTH);
        int nowDay = nowc.get(Calendar.DAY_OF_MONTH);
        //将Date转为Calendar日历对象,获取生日的年、月、日
        nowc.setTime(date);
        //通过年月日计算该对象的年纪
        //先通过Year计算初步年龄
        int year = nowYear - nowc.get(Calendar.YEAR);

        //通过Month和Day判断是否过生日

        if (nowc.get(Calendar.MONTH) > nowMonth) {
            return year - 1;
        }
        if (nowc.get(Calendar.DAY_OF_MONTH) > nowDay) {
            return year - 1;
        }
        return year;

    }
}